import asyncio
swichTik = 0
swichTimerStart = 0
sensor: bool = False
countTik = 0
maxTik = 50 # максимальное кол-во литров
timerMy = 0
timmerCount = 30 # максимальное кол-во времени в секундах
error = 0
swichRunTimer: bool = 0
sensorImitatorSwich: bool = 1
async def timerAsync():
    global timerMy
    await asyncio.sleep(1)
    timerMy += 1
    print("таймер = ", timerMy)
async def imitatorSensor():
    global sensor
    sensor = not sensor # random.randint(0, 1)
    print("Sensor = ", sensor)
    await asyncio.sleep(0.5)

def reset():
    global swichTimerStart
    global countTik
    global timerMy
    global swichRunTimer
    swichTimerStart = 0
    countTik = 0
    timerMy = 0
    swichRunTimer = 0
def errorFunc():
    reset()
    global error
    error = 1
def errorDo():
    print("Зажечь Диод")
    print("Закрыть клапан")
    print("Ошибка перерасход воды")
    global sensorImitatorSwich
    sensorImitatorSwich = 0

while True:
    if sensorImitatorSwich == 1:
        asyncio.run(imitatorSensor())
    if swichRunTimer == 1:
        asyncio.run(timerAsync())
    if error == 0:
        if (swichTik == 0) and (sensor == True):

            countTik += 1
            swichTik = 1
            if swichTimerStart == 0:
                print("Старт таймер") # таймер надо запустить
                swichRunTimer = 1
                swichTimerStart = 1
        elif swichTik == 1 and sensor == False:
            swichTik = 0
            print("countTik = ", countTik)
            # Уйти в ошибку если за отведенное время воды вылилось больше
        if timerMy > timmerCount and countTik > maxTik:
            errorFunc()
            # сбросить таймер если за время воды вылилось меньше
        elif timerMy > timmerCount and countTik < maxTik:
            reset()
            print("Стоп таймер") # таймер стоп
    elif error == 1:
        errorDo()
    print("Цикл идет")
